//
//  main.m
//  objective_c_language
//
//  Created by 龙 on 2018/5/22.
//  Copyright © 2018年 longlong. All rights reserved.
//

#import <UIKit/UIKit.h>
#import "AppDelegate.h"


__attribute__((constructor)) static void beforeMain()
{
    NSLog(@"before main");
}

__attribute__((destructor)) static void afterMain() {
    NSLog(@"after main");
}

int main(int argc, char * argv[]) {
    @autoreleasepool {
        
        NSLog(@"argc -- %d",argc);
        for (int i = 0; i < argc; i ++)
        {
            NSLog(@"argv[%d] -- %s",i,*(argv + i));
        }
        
        
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}
/* 入口函数 main()
 C 编译器允许 main() 没有参数 或者 有两个参数（一些实现允许有更多参数，属于对标准的扩展）。
 在这里我们仅讨论有两个参数的情况：
 第一个参数是命令行中的字符串数量，这个 int 型的参数被称为称为argc 表示参数计数(argument count)，系统用空格表示一个字符串的结束和下一个字符串的开始。
 程序把命令行中的字符串储存在内存中，并把每个字符串的地址存储在指针数组中。而该数组的地址则被存储在 main() 的第 2 个参数中。
 这个指向指针的指针称为 argv （表示参数值[argument value]）,
 
 字符串 argv[0]是该程序的路径

 我们不妨在 Product --> Scheme --> Edit Scheme --> argument --> Argument passed On Launch 里写入一个字符串

 */
